Load packages

Load data

AIC average by age group

Run regressions between model parameters and age

## 
## Call:
## lm(formula = LL ~ age, data = model_params)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -141.012  -41.027   -2.953   37.260  141.220 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -265.726     25.786 -10.305  < 2e-16 ***
## age            3.982      1.386   2.873  0.00508 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 62.96 on 90 degrees of freedom
## Multiple R-squared:  0.08399,    Adjusted R-squared:  0.07382 
## F-statistic: 8.253 on 1 and 90 DF,  p-value: 0.005075
## 
## Call:
## lm(formula = alphaPosChoice ~ age, data = model_params)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.2864 -0.1951 -0.1085  0.1003  0.7838 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.123105   0.116696   1.055    0.294
## age         0.006673   0.006273   1.064    0.290
## 
## Residual standard error: 0.2849 on 90 degrees of freedom
## Multiple R-squared:  0.01242,    Adjusted R-squared:  0.001445 
## F-statistic: 1.132 on 1 and 90 DF,  p-value: 0.2903
## 
## Call:
## lm(formula = alphaNegChoice ~ age, data = model_params)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.15491 -0.12216 -0.07414 -0.01518  0.86539 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  0.219194   0.095211   2.302   0.0236 *
## age         -0.005970   0.005118  -1.166   0.2465  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2325 on 90 degrees of freedom
## Multiple R-squared:  0.01489,    Adjusted R-squared:  0.003948 
## F-statistic: 1.361 on 1 and 90 DF,  p-value: 0.2465
## 
## Call:
## lm(formula = alphaPosComp ~ age, data = model_params)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.17039 -0.14045 -0.11397 -0.00871  0.82969 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  0.207457   0.100743   2.059   0.0424 *
## age         -0.003459   0.005415  -0.639   0.5246  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.246 on 90 degrees of freedom
## Multiple R-squared:  0.004514,   Adjusted R-squared:  -0.006547 
## F-statistic: 0.4081 on 1 and 90 DF,  p-value: 0.5246
## 
## Call:
## lm(formula = alphaNegComp ~ age, data = model_params)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.18426 -0.18099 -0.15342  0.05683  0.80339 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.1787245  0.1175399   1.521    0.132
## age         0.0002398  0.0063179   0.038    0.970
## 
## Residual standard error: 0.287 on 90 degrees of freedom
## Multiple R-squared:  1.6e-05,    Adjusted R-squared:  -0.01109 
## F-statistic: 0.00144 on 1 and 90 DF,  p-value: 0.9698
## 
## Call:
## lm(formula = betaAgency ~ age, data = model_params)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.3948 -3.7399 -0.5663  2.5973 18.5924 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)   4.0129     2.2376   1.793   0.0763 .
## age           0.2955     0.1203   2.457   0.0159 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.463 on 90 degrees of freedom
## Multiple R-squared:  0.06287,    Adjusted R-squared:  0.05246 
## F-statistic: 6.038 on 1 and 90 DF,  p-value: 0.01592
## 
## Call:
## lm(formula = betaMachine ~ age, data = model_params)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.8618 -3.3465 -0.7262  2.3170 16.5670 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)   4.4853     2.0354   2.204   0.0301 *
## age           0.1644     0.1094   1.502   0.1365  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.97 on 90 degrees of freedom
## Multiple R-squared:  0.02446,    Adjusted R-squared:  0.01362 
## F-statistic: 2.257 on 1 and 90 DF,  p-value: 0.1365
## 
## Call:
## lm(formula = agencyBonus ~ age, data = model_params)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.84601 -0.16303 -0.04726  0.04737  1.75107 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.123635   0.171281   0.722    0.472
## age         0.010736   0.009207   1.166    0.247
## 
## Residual standard error: 0.4182 on 90 degrees of freedom
## Multiple R-squared:  0.01488,    Adjusted R-squared:  0.003939 
## F-statistic:  1.36 on 1 and 90 DF,  p-value: 0.2466

Learning rate model

## Mixed Model Anova Table (Type 3 tests, S-method)
## 
## Model: estimate ~ ageZ * valence * agency + (1 | subID)
## Data: learning_rates
##                Effect        df        F p.value
## 1                ageZ  1, 90.00     0.04    .842
## 2             valence 1, 270.00   3.07 +    .081
## 3              agency 1, 270.00     0.25    .617
## 4        ageZ:valence 1, 270.00     0.63    .428
## 5         ageZ:agency 1, 270.00     0.12    .728
## 6      valence:agency 1, 270.00 10.05 **    .002
## 7 ageZ:valence:agency 1, 270.00     2.10    .148
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: estimate ~ ageZ * valence * agency + (1 | subID)
##    Data: data
## 
## REML criterion at convergence: 107.4
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -1.1984 -0.5828 -0.3909  0.0827  3.2210 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  subID    (Intercept) 0.004016 0.06337 
##  Residual             0.065509 0.25595 
## Number of obs: 368, groups:  subID, 92
## 
## Fixed effects:
##                         Estimate Std. Error         df t value Pr(>|t|)    
## (Intercept)             0.170801   0.014889  90.000000  11.472   <2e-16 ***
## ageZ                   -0.002984   0.014909  90.000000  -0.200   0.8418    
## valence1               -0.023387   0.013342 269.999999  -1.753   0.0808 .  
## agency1                 0.006673   0.013342 269.999999   0.500   0.6174    
## ageZ:valence1          -0.010603   0.013360 269.999999  -0.794   0.4281    
## ageZ:agency1            0.004651   0.013360 269.999999   0.348   0.7280    
## valence1:agency1       -0.042297   0.013342 269.999999  -3.170   0.0017 ** 
## ageZ:valence1:agency1  -0.019375   0.013360 269.999999  -1.450   0.1482    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##             (Intr) ageZ  valnc1 agncy1 agZ:v1 agZ:g1 vln1:1
## ageZ        0.000                                          
## valence1    0.000  0.000                                   
## agency1     0.000  0.000 0.000                             
## ageZ:valnc1 0.000  0.000 0.000  0.000                      
## ageZ:agncy1 0.000  0.000 0.000  0.000  0.000               
## vlnc1:gncy1 0.000  0.000 0.000  0.000  0.000  0.000        
## agZ:vlnc1:1 0.000  0.000 0.000  0.000  0.000  0.000  0.000
## 
##  Paired t-test
## 
## data:  model_params$alphaPosChoice and model_params$alphaNegChoice
## t = 3.2464, df = 91, p-value = 0.001636
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  0.05098873 0.21174803
## sample estimates:
## mean difference 
##       0.1313684
## 
##  Paired t-test
## 
## data:  model_params$alphaPosComp and model_params$alphaNegComp
## t = -0.8713, df = 91, p-value = 0.3859
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -0.12404217  0.04840164
## sample estimates:
## mean difference 
##     -0.03782026

Plot relations between model parameters and age

Parameter summary statistics

Questionnaire relations

DOC

## 
## Call:
## lm(formula = DOC ~ zAge, data = DOC)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -32.234  -6.388  -0.270   7.449  30.317 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   95.527      1.255   76.11   <2e-16 ***
## zAge           2.446      1.274    1.92    0.058 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11.97 on 89 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.03978,    Adjusted R-squared:  0.02899 
## F-statistic: 3.687 on 1 and 89 DF,  p-value: 0.05804
## 
## Call:
## lm(formula = DOC ~ zBetaAgency * zAgencyBonus * zAge, data = DOC)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -34.318  -6.665  -0.614   7.416  30.307 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                    95.4327     1.4180  67.300   <2e-16 ***
## zBetaAgency                    -0.6607     1.5865  -0.416   0.6782    
## zAgencyBonus                    1.3423     3.6437   0.368   0.7135    
## zAge                            1.9834     1.4240   1.393   0.1674    
## zBetaAgency:zAgencyBonus        0.9452     2.7639   0.342   0.7332    
## zBetaAgency:zAge                0.7317     1.4672   0.499   0.6193    
## zAgencyBonus:zAge              -6.2496     3.4316  -1.821   0.0722 .  
## zBetaAgency:zAgencyBonus:zAge  -3.1118     2.5602  -1.215   0.2276    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 11.95 on 83 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.1082, Adjusted R-squared:  0.03295 
## F-statistic: 1.438 on 7 and 83 DF,  p-value: 0.2013

LOC

## 
## Call:
## lm(formula = LOC ~ zAge, data = LOC)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.4335 -3.3923 -0.4242  3.4805 10.1914 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  12.6288     0.4372  28.886   <2e-16 ***
## zAge          0.2453     0.4392   0.559    0.578    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.17 on 89 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.003494,   Adjusted R-squared:  -0.007703 
## F-statistic: 0.3121 on 1 and 89 DF,  p-value: 0.5778
## 
## Call:
## lm(formula = LOC ~ zBetaAgency * zAgencyBonus * zAge, data = LOC)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.9583 -3.4626 -0.3911  3.2787 10.0915 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   12.92475    0.50467  25.610   <2e-16 ***
## zBetaAgency                   -0.14273    0.56284  -0.254    0.800    
## zAgencyBonus                   1.41264    1.29225   1.093    0.277    
## zAge                           0.36724    0.50171   0.732    0.466    
## zBetaAgency:zAgencyBonus       1.23889    0.98011   1.264    0.210    
## zBetaAgency:zAge              -0.02981    0.52015  -0.057    0.954    
## zAgencyBonus:zAge             -1.01683    1.21653  -0.836    0.406    
## zBetaAgency:zAgencyBonus:zAge -0.31812    0.90795  -0.350    0.727    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.238 on 83 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.04037,    Adjusted R-squared:  -0.04056 
## F-statistic: 0.4988 on 7 and 83 DF,  p-value: 0.8329

BDI

## 
## Call:
## lm(formula = zBDI ~ zAge, data = BDI)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.94728 -0.78671 -0.01517  0.72806  2.78555 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.122e-16  1.042e-01   0.000    1.000
## zAge        3.587e-02  1.048e-01   0.342    0.733
## 
## Residual standard error: 0.9993 on 90 degrees of freedom
## Multiple R-squared:  0.001301,   Adjusted R-squared:  -0.009796 
## F-statistic: 0.1172 on 1 and 90 DF,  p-value: 0.7329
## 
## Call:
## lm(formula = zBDI ~ zBetaAgency * zAgencyBonus * zAge, data = BDI)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.85715 -0.65938  0.00033  0.69522  2.67871 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)
## (Intercept)                    0.08489    0.11978   0.709    0.480
## zBetaAgency                    0.20766    0.13439   1.545    0.126
## zAgencyBonus                   0.34329    0.30858   1.113    0.269
## zAge                           0.04168    0.11917   0.350    0.727
## zBetaAgency:zAgencyBonus       0.28280    0.23403   1.208    0.230
## zBetaAgency:zAge              -0.02180    0.12418  -0.176    0.861
## zAgencyBonus:zAge              0.07767    0.29050   0.267    0.790
## zBetaAgency:zAgencyBonus:zAge  0.11565    0.21679   0.533    0.595
## 
## Residual standard error: 1.012 on 84 degrees of freedom
## Multiple R-squared:  0.04419,    Adjusted R-squared:  -0.03546 
## F-statistic: 0.5549 on 7 and 84 DF,  p-value: 0.7903

STAI

## 
## Call:
## lm(formula = zSTAI_t ~ zAge, data = STAI)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.82245 -0.96538  0.01261  0.83118  2.16747 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.001085   0.104658   0.010    0.992
## zAge        0.060134   0.106243   0.566    0.573
## 
## Residual standard error: 0.9982 on 89 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.003587,   Adjusted R-squared:  -0.007609 
## F-statistic: 0.3204 on 1 and 89 DF,  p-value: 0.5728
## 
## Call:
## lm(formula = zSTAI_t ~ zBetaAgency * zAgencyBonus * zAge, data = STAI)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.84138 -0.92206 -0.05708  0.79479  2.23553 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)
## (Intercept)                    0.03420    0.12090   0.283    0.778
## zBetaAgency                    0.15007    0.13569   1.106    0.272
## zAgencyBonus                   0.18969    0.31114   0.610    0.544
## zAge                           0.02867    0.12130   0.236    0.814
## zBetaAgency:zAgencyBonus       0.16540    0.23606   0.701    0.485
## zBetaAgency:zAge              -0.08046    0.12645  -0.636    0.526
## zAgencyBonus:zAge             -0.05753    0.29196  -0.197    0.844
## zBetaAgency:zAgencyBonus:zAge -0.09840    0.21793  -0.452    0.653
## 
## Residual standard error: 1.016 on 83 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.03663,    Adjusted R-squared:  -0.04462 
## F-statistic: 0.4508 on 7 and 83 DF,  p-value: 0.867
## 
## Call:
## lm(formula = zSTAI_s ~ zAge, data = STAI)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9203 -0.6732 -0.1498  0.4769  3.1426 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.937e-16  1.033e-01   0.000    1.000
## zAge        1.368e-01  1.038e-01   1.318    0.191
## 
## Residual standard error: 0.9905 on 90 degrees of freedom
## Multiple R-squared:  0.01894,    Adjusted R-squared:  0.008035 
## F-statistic: 1.737 on 1 and 90 DF,  p-value: 0.1909
## 
## Call:
## lm(formula = zSTAI_s ~ zBetaAgency * zAgencyBonus * zAge, data = STAI)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9560 -0.6394 -0.1377  0.5929  3.2736 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)
## (Intercept)                    0.10180    0.11729   0.868    0.388
## zBetaAgency                    0.18433    0.13159   1.401    0.165
## zAgencyBonus                   0.34019    0.30216   1.126    0.263
## zAge                           0.14574    0.11669   1.249    0.215
## zBetaAgency:zAgencyBonus       0.36647    0.22917   1.599    0.114
## zBetaAgency:zAge              -0.09988    0.12160  -0.821    0.414
## zAgencyBonus:zAge             -0.07798    0.28446  -0.274    0.785
## zBetaAgency:zAgencyBonus:zAge -0.02332    0.21228  -0.110    0.913
## 
## Residual standard error: 0.9909 on 84 degrees of freedom
## Multiple R-squared:  0.08352,    Adjusted R-squared:  0.007147 
## F-statistic: 1.094 on 7 and 84 DF,  p-value: 0.3748
LS0tCnRpdGxlOiAiVm9DIEFuYWx5c2VzIFBhcnQgMzogQW5hbHl6ZSBSZWluZm9yY2VtZW50LUxlYXJuaW5nIFJlc3VsdHMiCmRhdGU6IDEvOC8yNApvdXRwdXQ6CiAgICBodG1sX2RvY3VtZW50OgogICAgICAgIGRmX3ByaW50OiAncGFnZWQnCiAgICAgICAgdG9jOiB0cnVlCiAgICAgICAgdG9jX2Zsb2F0OgogICAgICAgICAgICBjb2xsYXBzZWQ6IGZhbHNlCiAgICAgICAgICAgIHNtb290aF9zY3JvbGw6IHRydWUKICAgICAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlCiAgICAgICAgY29kZV9kb3dubG9hZDogdHJ1ZQogICAgICAgIHNlbGZfY29udGFpbmVkOiB0cnVlCi0tLQoKYGBge3IgY2h1bmsgc2V0dGluZ3MsIGluY2x1ZGUgPSBGQUxTRX0KIyBzZXQgY2h1bmsgc2V0dGluZ3MKa25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgICBjYWNoZSA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gRkFMU0UpCmtuaXRyOjpvcHRzX2NodW5rJHNldChkcGk9NjAwKQprbml0cjo6b3B0c19rbml0JHNldChyb290LmRpciA9IHJwcm9qcm9vdDo6ZmluZF9yc3R1ZGlvX3Jvb3RfZmlsZSgpKQpgYGAKCiMgTG9hZCBwYWNrYWdlcyAKYGBge3IgbG9hZCBwYWNrYWdlcywgaW5jbHVkZSA9IEZ9CgojIGxpc3QgYWxsIHBhY2thZ2VzIHJlcXVpcmVkIGZvciB0aGUgYW5hbHlzaXMKbGlzdC5vZi5wYWNrYWdlcyA8LSBjKCJ0aWR5dmVyc2UiLCAibGF0ZXgyZXhwIiwgImFmZXgiKQoKIyBjaGVjayBpZiBhbGwgcGFja2FnZXMgYXJlIGluc3RhbGxlZCwgaWYgbm90LCBpbnN0YWxsIHRoZW0uCm5ldy5wYWNrYWdlcyA8LSBsaXN0Lm9mLnBhY2thZ2VzWyEobGlzdC5vZi5wYWNrYWdlcyAlaW4lIGluc3RhbGxlZC5wYWNrYWdlcygpWywiUGFja2FnZSJdKV0KaWYobGVuZ3RoKG5ldy5wYWNrYWdlcykpIGluc3RhbGwucGFja2FnZXMobmV3LnBhY2thZ2VzKQoKIyBsb2FkIGFsbCBwYWNrYWdlcyAKbGFwcGx5KGxpc3Qub2YucGFja2FnZXMsIGxpYnJhcnksIGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkKCiMgYWRkIHRoZW1lIGZvciBwbG90dGluZwp2b2NfdGhlbWUgPC0gZnVuY3Rpb24gKCkgewogIHRoZW1lKAogICAgcGFuZWwuYm9yZGVyID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiLCBjb2xvcj0iZ3JheTc1IiksCiAgICBwYW5lbC5iYWNrZ3JvdW5kICA9IGVsZW1lbnRfYmxhbmsoKSwKICAgIHBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwgCiAgICBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsPSJ0cmFuc3BhcmVudCIsIGNvbG91cj1OQSksCiAgICBsZWdlbmQua2V5ID0gZWxlbWVudF9yZWN0KGZpbGw9InRyYW5zcGFyZW50IiwgY29sb3VyPU5BKSwKICAgIGxpbmUgPSBlbGVtZW50X2JsYW5rKCksCiAgICBheGlzLnRpY2tzID0gZWxlbWVudF9saW5lKGNvbG9yPSJncmF5NzUiKSwKICAgIHRleHQ9ZWxlbWVudF90ZXh0KGZhbWlseT0iQXZlbmlyIiksCiAgICBheGlzLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwKICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE1KSwKICAgIHRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNSksCiAgICBzdHJpcC5iYWNrZ3JvdW5kID0gZWxlbWVudF9ibGFuaygpLAogICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplPTEyKQogICkKfQoKY29sb3I4ID0gIiM4MGRiYjIiCmNvbG9yMSA9ICIjMDBiNGQ4Igpjb2xvcjIgPSAiIzAwNzdiNiIKY29sb3IzID0gIiMwMzA0NWUiCmNvbG9yNCA9ICIjODQzNDdDIgpjb2xvcjUgPSAiI0I0MDQyNCIKY29sb3I2ID0gIiNFQjZEMUUiCmNvbG9yNyA9ICIjZjViNjhmIgoKc2NhbGVfdGhpcyA8LSBmdW5jdGlvbih4KXsKICAoeCAtIG1lYW4oeCwgbmEucm09VFJVRSkpIC8gc2QoeCwgbmEucm09VFJVRSkKfQoKYGBgCgojIyBMb2FkIGRhdGEgIApgYGB7ciwgbG9hZCBkYXRhfQojbG9hZCBkYXRhCmFpY3MgPSByZWFkX2NzdigiUkxfbW9kZWxpbmcvb3V0cHV0L2FpY3NfYWxsXzE2X21vZGVsc18xMDBpdGVyLmNzdiIpCmBgYAoKYGBge3IgcGl2b3QgQUlDIGRhdGEgbG9uZ2VyfQphaWNzMSA8LSBwaXZvdF9sb25nZXIoYWljcywgCiAgICAgICAgICAgICAgICBjb2xzID0gb25lQWxwaGFfb25lQmV0YTpmb3VyQWxwaGFfdHdvQmV0YV9hZ2VuY3lCb251cywKICAgICAgICAgICAgICAgIG5hbWVzX3RvID0gIm1vZGVsIiwKICAgICAgICAgICAgICAgIHZhbHVlc190byA9ICJBSUMiKQpgYGAKCgojICBBSUMgYXZlcmFnZSBieSBhZ2UgZ3JvdXAgCmBgYHtyIHBsb3QgQUlDIGJ5IGFnZSBncm91cCwgZmlnLndpZHRoID0gOCwgZmlnLmhlaWdodCA9IDUsIHVuaXRzID0gImluIn0KCiMgQWRkIGlkIGFuZCBvdGhlciBkZW1vZ3JhcGhpYyBpbmZvCnN1Yl9pbmZvIDwtIHJlYWRfY3N2KCdkYXRhL3ZvY19zdWJfaW5mby5jc3YnKSAlPiUKICAgIG11dGF0ZShhZ2VfZ3JvdXAgPSBjYXNlX3doZW4oYWdlIDwgMTMgfiAiQ2hpbGRyZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2UgPiAxMi45OSAmIGFnZSA8IDE4IH4gIkFkb2xlc2NlbnRzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlID4gMTcuOTkgfiAiQWR1bHRzIikpCgpzdWJfaW5mbyRhZ2VfZ3JvdXAgPC0gZmFjdG9yKHN1Yl9pbmZvJGFnZV9ncm91cCwgbGV2ZWxzID0gYygiQ2hpbGRyZW4iLCAiQWRvbGVzY2VudHMiLCAiQWR1bHRzIikpCgptb2RlbF9yZXN1bHRzIDwtIGZ1bGxfam9pbihzdWJfaW5mbywgYWljczEsIGJ5ID0gYygic3ViSUQiKSkKCm1vZGVsX3Jlc3VsdHMkbW9kZWwgPC0gZmFjdG9yKG1vZGVsX3Jlc3VsdHMkbW9kZWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJvbmVBbHBoYV9vbmVCZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25lQWxwaGFfdHdvQmV0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR3b0FscGhhX29uZUJldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0d29BbHBoYV90d29CZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdvQWxwaGFWYWxlbmNlZF9vbmVCZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdvQWxwaGFWYWxlbmNlZF90d29CZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm91ckFscGhhX29uZUJldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3VyQWxwaGFfdHdvQmV0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uZUFscGhhX29uZUJldGFfYWdlbmN5Qm9udXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmVBbHBoYV90d29CZXRhX2FnZW5jeUJvbnVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdvQWxwaGFfb25lQmV0YV9hZ2VuY3lCb251cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR3b0FscGhhX3R3b0JldGFfYWdlbmN5Qm9udXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0d29BbHBoYVZhbGVuY2VkX29uZUJldGFfYWdlbmN5Qm9udXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0d29BbHBoYVZhbGVuY2VkX3R3b0JldGFfYWdlbmN5Qm9udXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3VyQWxwaGFfb25lQmV0YV9hZ2VuY3lCb251cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvdXJBbHBoYV90d29CZXRhX2FnZW5jeUJvbnVzIikpCm1vZGVsX3Jlc3VsdHMgPC0gbW9kZWxfcmVzdWx0cyAlPiUKICAgIG11dGF0ZShhZ2VuY3lCb251cyA9IGNhc2Vfd2hlbihzdHJfZGV0ZWN0KG1vZGVsLCAiYWdlbmN5IikgfiAiV2l0aCBBZ2VuY3kgQm9udXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXN0cl9kZXRlY3QobW9kZWwsICJhZ2VuY3kiKSB+ICJObyBBZ2VuY3kgQm9udXMiKSwKICAgICAgICAgICBzaG9ydE5hbWUgPSBzdHJfcmVtb3ZlKG1vZGVsLCAnX2FnZW5jeUJvbnVzJykpCgptb2RlbF9yZXN1bHRzJHNob3J0TmFtZSA8LSBmYWN0b3IobW9kZWxfcmVzdWx0cyRzaG9ydE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJvbmVBbHBoYV9vbmVCZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib25lQWxwaGFfdHdvQmV0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR3b0FscGhhX29uZUJldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0d29BbHBoYV90d29CZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdvQWxwaGFWYWxlbmNlZF9vbmVCZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHdvQWxwaGFWYWxlbmNlZF90d29CZXRhIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm91ckFscGhhX29uZUJldGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3VyQWxwaGFfdHdvQmV0YSIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKI3N1bW1hcml6ZQptb2RlbF9zdW1tYXJ5IDwtIG1vZGVsX3Jlc3VsdHMgJT4lCiAgICBncm91cF9ieShhZ2VfZ3JvdXAsIHNob3J0TmFtZSwgYWdlbmN5Qm9udXMpICU+JQogICAgc3VtbWFyaXplKG1lYW5BSUMgPSBtZWFuKEFJQykpCgojICMgUGxvdCB0aGUgcmVzdWx0cyBieSBhZ2UgZ3JvdXAgCkFJQ19hZ2VfcGxvdCA8LSBnZ3Bsb3QobW9kZWxfc3VtbWFyeSwgYWVzKHggPSBhZ2VfZ3JvdXAsIHkgPSBtZWFuQUlDLCBmaWxsID0gc2hvcnROYW1lKSkrCiAgICBmYWNldF93cmFwKH5hZ2VuY3lCb251cykgKwogICAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImRvZGdlIiwgY29sb3IgPSAiYmxhY2siKSArCiAgICBzY2FsZV9maWxsX21hbnVhbChuYW1lID0gIk1vZGVsIiwKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoY29sb3I4LCBjb2xvcjEsIGNvbG9yMiwgY29sb3IzLCBjb2xvcjQsIGNvbG9yNSwgY29sb3I2LCBjb2xvcjcsIGNvbG9yMSksCiAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAgYyhUZVgoJyRvbmVcXGFscGhhXFxfb25lXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckb25lXFxhbHBoYVxcX3R3b1xcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJHR3b0Nob2ljZVxcYWxwaGFcXF9vbmVcXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyR0d29DaG9pY2VcXGFscGhhXFxfdHdvXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckdHdvVmFsZW5jZWRcXGFscGhhXFxfb25lXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckdHdvVmFsZW5jZWRcXGFscGhhXFxfdHdvXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckZm91clxcYWxwaGFcXF9vbmVcXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyRmb3VyXFxhbHBoYVxcX3R3b1xcYmV0YScpKSkgKyAKICAgIGNvb3JkX2NhcnRlc2lhbih5bGltID0gYygzNTAsIDYwMCkpICsKICAgIHlsYWIoIk1lYW4gQUlDIikgKwogICAgeGxhYigiIikgKwogICAgdm9jX3RoZW1lKCkgKwogICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgaGp1c3QgPSAxKSkKQUlDX2FnZV9wbG90CmBgYAoKYGBge3IgYWljIG92ZXJhbGwgcGxvdCwgZmlnLndpZHRoID0gNiwgZmlnLmhlaWdodCA9IDQsIHVuaXRzID0gImluIn0KbW9kZWxfc3VtbWFyeV9vdmVyYWxsIDwtIG1vZGVsX3Jlc3VsdHMgJT4lCiAgICBncm91cF9ieShtb2RlbCwgc2hvcnROYW1lLCBhZ2VuY3lCb251cykgJT4lCiAgICBzdW1tYXJpemUobWVhbkFJQyA9IG1lYW4oQUlDKSkKCkFJQ19wbG90IDwtIGdncGxvdChtb2RlbF9zdW1tYXJ5X292ZXJhbGwsIGFlcyh4ID0gc2hvcnROYW1lLCB5ID0gbWVhbkFJQywgZmlsbCA9IHNob3J0TmFtZSkpICsKICAgIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9ICJkb2RnZSIsIGNvbG9yID0gImJsYWNrIikgKwogICAgZmFjZXRfd3JhcCh+YWdlbmN5Qm9udXMpICsKICAgIGNvb3JkX2NhcnRlc2lhbih5bGltID0gYygzNTAsIDYwMCkpICsgCiAgICB5bGFiKCJNZWFuIEFJQyIpICsKICAgIHhsYWIoIk1vZGVsIikgKwogICAgc2NhbGVfZmlsbF9tYW51YWwobmFtZSA9ICJNb2RlbCIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKGNvbG9yOCwgY29sb3IxLCBjb2xvcjIsIGNvbG9yMywgY29sb3I0LCBjb2xvcjUsIGNvbG9yNiwgY29sb3I3LCBjb2xvcjEpLAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIGMoVGVYKCckb25lXFxhbHBoYVxcX29uZVxcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJG9uZVxcYWxwaGFcXF90d29cXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyR0d29DaG9pY2VcXGFscGhhXFxfb25lXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckdHdvQ2hvaWNlXFxhbHBoYVxcX3R3b1xcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJHR3b1ZhbGVuY2VkXFxhbHBoYVxcX29uZVxcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJHR3b1ZhbGVuY2VkXFxhbHBoYVxcX3R3b1xcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJGZvdXJcXGFscGhhXFxfb25lXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckZm91clxcYWxwaGFcXF90d29cXGJldGEnKSkpICsgCiAgICBzY2FsZV94X2Rpc2NyZXRlKGxhYmVscyA9ICBjKFRlWCgnJG9uZVxcYWxwaGFcXF9vbmVcXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyRvbmVcXGFscGhhXFxfdHdvXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckdHdvQ2hvaWNlXFxhbHBoYVxcX29uZVxcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJHR3b0Nob2ljZVxcYWxwaGFcXF90d29cXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyR0d29WYWxlbmNlZFxcYWxwaGFcXF9vbmVcXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyR0d29WYWxlbmNlZFxcYWxwaGFcXF90d29cXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyRmb3VyXFxhbHBoYVxcX29uZVxcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJGZvdXJcXGFscGhhXFxfdHdvXFxiZXRhJykpKSArIAogICAgdm9jX3RoZW1lKCkgKwogICAgICAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNzUsIGhqdXN0ID0gMSksCiAgICAgICAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpBSUNfcGxvdAoKYGBgCgpgYGB7ciBhaWMgb3ZlcmFsbCBkaWZmZXJlbmNlIHBsb3QsIGZpZy53aWR0aCA9IDQsIGZpZy5oZWlnaHQgPSA1LCB1bml0cyA9ICJpbiJ9CiNnZXQgbWluaW11bSBBSUMKbWluQUlDID0gbWluKG1vZGVsX3N1bW1hcnlfb3ZlcmFsbCRtZWFuQUlDKQoKI3N1YnRyYWN0IGZyb20gbWVhbiBBSUNzCm1vZGVsX2RpZmZlcmVuY2Vfc3VtbWFyeSA8LSBtb2RlbF9zdW1tYXJ5X292ZXJhbGwgJT4lCiAgICBtdXRhdGUoQUlDX2RpZmZlcmVuY2UgPSBtZWFuQUlDIC0gbWluQUlDWzFdKSAlPiUKICAgIGZpbHRlcihhZ2VuY3lCb251cyA9PSAiV2l0aCBBZ2VuY3kgQm9udXMiKQoKI3Bsb3QKQUlDX2RpZmZlcmVuY2VfcGxvdCA8LSBnZ3Bsb3QobW9kZWxfZGlmZmVyZW5jZV9zdW1tYXJ5LCBhZXMoeCA9IHNob3J0TmFtZSwgeSA9IEFJQ19kaWZmZXJlbmNlLCBmaWxsID0gc2hvcnROYW1lKSkgKwogICAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImRvZGdlIiwgY29sb3IgPSAiYmxhY2siKSArCiAgICBmYWNldF93cmFwKH5hZ2VuY3lCb251cykgKwogICAgeWxhYigiQUlDIERpZmZlcmVuY2UiKSArCiAgICB4bGFiKCIiKSArCiAgICBzY2FsZV9maWxsX21hbnVhbChuYW1lID0gIk1vZGVsIiwKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoY29sb3I4LCBjb2xvcjEsIGNvbG9yMiwgY29sb3IzLCBjb2xvcjQsIGNvbG9yNSwgY29sb3I2LCBjb2xvcjcsIGNvbG9yMSksCiAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAgYyhUZVgoJyRvbmVcXGFscGhhXFxfb25lXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckb25lXFxhbHBoYVxcX3R3b1xcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJHR3b0Nob2ljZVxcYWxwaGFcXF9vbmVcXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyR0d29DaG9pY2VcXGFscGhhXFxfdHdvXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckdHdvVmFsZW5jZWRcXGFscGhhXFxfb25lXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckdHdvVmFsZW5jZWRcXGFscGhhXFxfdHdvXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckZm91clxcYWxwaGFcXF9vbmVcXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyRmb3VyXFxhbHBoYVxcX3R3b1xcYmV0YScpKSkgKyAKICAgIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gIGMoVGVYKCckb25lXFxhbHBoYVxcX29uZVxcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJG9uZVxcYWxwaGFcXF90d29cXGJldGEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoJyR0d29DaG9pY2VcXGFscGhhXFxfb25lXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckdHdvQ2hvaWNlXFxhbHBoYVxcX3R3b1xcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJHR3b1ZhbGVuY2VkXFxhbHBoYVxcX29uZVxcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJHR3b1ZhbGVuY2VkXFxhbHBoYVxcX3R3b1xcYmV0YScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgnJGZvdXJcXGFscGhhXFxfb25lXFxiZXRhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCckZm91clxcYWxwaGFcXF90d29cXGJldGEnKSkpICsgCiAgICB2b2NfdGhlbWUoKSArCiAgICAgICAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgaGp1c3QgPSAxKSwKICAgICAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCkFJQ19kaWZmZXJlbmNlX3Bsb3QKCmBgYAoKIyAgRXhhbWluZSBhZ2UtcmVsYXRlZCBjaGFuZ2UgaW4gcGFyYW1ldGVyIGVzdGltYXRlcyBmcm9tIG1vZGVscwpgYGB7ciBwYXJhbWV0ZXIgZXN0aW1hdGVzfQoKIyBsb2FkIGFsbCBwYXJhbWV0ZXJzIGZyb20gZWFjaCBtb2RlbAptb2RlbF9wYXJhbXMgPC0gcmVhZF9jc3YoIlJMX21vZGVsaW5nL291dHB1dC9tb2RlbF9maXRzX3JlYWxfZGF0YS9mb3VyQWxwaGFfdHdvQmV0YV9hZ2VuY3lCb251cy5jc3YiLAogICAgICAgICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gYygibmVnTEwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9nUG9zdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBSUMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQklDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhUG9zQ2hvaWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhTmVnQ2hvaWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhUG9zQ29tcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbHBoYU5lZ0NvbXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmV0YUFnZW5jeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZXRhTWFjaGluZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhZ2VuY3lCb251cyIpKQoKI2FkZCBzdWIgSUQgYW5kIGluZm9ybWF0aW9uCnN1YklEIDwtIG1vZGVsX3Jlc3VsdHMgJT4lIHNlbGVjdChzdWJJRCkgJT4lIHVuaXF1ZSgpCm1vZGVsX3BhcmFtcyA8LSBiaW5kX2NvbHMoc3ViSUQsIG1vZGVsX3BhcmFtcykKbW9kZWxfcGFyYW1zIDwtIGZ1bGxfam9pbihzdWJfaW5mbywgbW9kZWxfcGFyYW1zLCBieSA9IGMoInN1YklEIikpCmBgYAoKCiMgUnVuIHJlZ3Jlc3Npb25zIGJldHdlZW4gbW9kZWwgcGFyYW1ldGVycyBhbmQgYWdlCmBgYHtyIHBhcmFtIGFnZSByZWdyZXNzaW9uc30KCm1vZGVsX3BhcmFtcyRMTCA8LSBtb2RlbF9wYXJhbXMkbmVnTEwgKiAtMQoKIyBMb2cgbGlrZWxpaG9vZApzdW1tYXJ5KGxtKExMIH4gYWdlLCBkYXRhID0gbW9kZWxfcGFyYW1zKSkKIyBzaWduaWZpY2FudAoKIyBBbHBoYSBQb3MgQ2hvaWNlCnN1bW1hcnkobG0oYWxwaGFQb3NDaG9pY2UgfiBhZ2UsIGRhdGEgPSBtb2RlbF9wYXJhbXMpKQojbm90IHNpZ25pZmljYW50CgojIEFscGhhIE5lZyBDaG9pY2UKc3VtbWFyeShsbShhbHBoYU5lZ0Nob2ljZSB+IGFnZSwgZGF0YSA9IG1vZGVsX3BhcmFtcykpCiNub3Qgc2lnbmlmaWNhbnQKCiMgQWxwaGEgUG9zIENvbXAKc3VtbWFyeShsbShhbHBoYVBvc0NvbXAgfiBhZ2UsIGRhdGEgPSBtb2RlbF9wYXJhbXMpKQojbm90IHNpZ25pZmljYW50CgojIEFscGhhIE5lZyBDb21wCnN1bW1hcnkobG0oYWxwaGFOZWdDb21wIH4gYWdlLCBkYXRhID0gbW9kZWxfcGFyYW1zKSkKI25vdCBzaWduaWZpY2FudAoKIyBCZXRhIEFnZW5jeQpzdW1tYXJ5KGxtKGJldGFBZ2VuY3kgfiBhZ2UsIGRhdGEgPSBtb2RlbF9wYXJhbXMpKQojc2lnbmlmaWNhbnQKCiMgQmV0YSBCYW5kaXQKc3VtbWFyeShsbShiZXRhTWFjaGluZSB+IGFnZSwgZGF0YSA9IG1vZGVsX3BhcmFtcykpCiNub3Qgc2lnbmlmaWNhbnQKCiMgYWdlbmN5IGJvbnVzCnN1bW1hcnkobG0oYWdlbmN5Qm9udXMgfiBhZ2UsIGRhdGEgPSBtb2RlbF9wYXJhbXMpKQojbm90IHNpZ25pZmljYW50CmBgYAoKCiMgTGVhcm5pbmcgcmF0ZSBtb2RlbApgYGB7ciBsZWFybmluZyByYXRlIHJlZ3Jlc3Npb259CmxlYXJuaW5nX3JhdGVzIDwtIG1vZGVsX3BhcmFtcyAlPiUKICAgIHBpdm90X2xvbmdlcihjb2xzID0gYyhhbHBoYVBvc0Nob2ljZTphbHBoYU5lZ0NvbXApLAogICAgICAgICAgICAgICAgIG5hbWVzX3RvID0gImxlYXJuaW5nUmF0ZSIsCiAgICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gImVzdGltYXRlIikgJT4lCiAgICBzZWxlY3Qoc3ViSUQsIGFnZSwgYWdlX2dyb3VwLCBsZWFybmluZ1JhdGUsIGVzdGltYXRlKSAlPiUKICAgIHVuaXF1ZSgpICU+JQogICAgbXV0YXRlKHZhbGVuY2UgPSBjYXNlX3doZW4oc3RyX2RldGVjdChsZWFybmluZ1JhdGUsICJQb3MiKSB+ICJQb3NpdGl2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJfZGV0ZWN0KGxlYXJuaW5nUmF0ZSwgIk5lZyIpIH4gIk5lZ2F0aXZlIiksCiAgICAgICAgICAgYWdlbmN5ID0gY2FzZV93aGVuKHN0cl9kZXRlY3QobGVhcm5pbmdSYXRlLCAiQ2hvaWNlIikgfiAiQ2hvaWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyX2RldGVjdChsZWFybmluZ1JhdGUsICJDb21wIikgfiAiQ29tcCIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCmxlYXJuaW5nX3JhdGVzJGFnZVogPC0gc2NhbGVfdGhpcyhsZWFybmluZ19yYXRlcyRhZ2UpCgpsZWFybmluZ19yYXRlX21vZGVsIDwtIG1peGVkKGVzdGltYXRlIH4gYWdlWiAqIHZhbGVuY2UgKiBhZ2VuY3kgKyAoMXxzdWJJRCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGxlYXJuaW5nX3JhdGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJTIikKbGVhcm5pbmdfcmF0ZV9tb2RlbApzdW1tYXJ5KGxlYXJuaW5nX3JhdGVfbW9kZWwpCiMgdmFsZW5jZSB4IGFnZW5jeSBpbnRlcmFjdGlvbgojIG1hcmdpbmFsIHZhbGVuY2UgeCBhZ2VuY3kgeCBhZ2UgaW50ZXJhY3Rpb24KCiN0IHRlc3QgYmV0d2VlbiBhbHBoYSBwb3MgY2hvaWNlIGFuZCBhbHBoYSBuZWcgY2hvaWNlCnQudGVzdChtb2RlbF9wYXJhbXMkYWxwaGFQb3NDaG9pY2UsIG1vZGVsX3BhcmFtcyRhbHBoYU5lZ0Nob2ljZSwgcGFpcmVkID0gVCkKI3NpZ25pZmljYW50CgojdCB0ZXN0IGJldHdlZW4gYWxwaGEgcG9zIGNvbXAgYW5kIGFscGhhIG5lZyBjb21wCnQudGVzdChtb2RlbF9wYXJhbXMkYWxwaGFQb3NDb21wLCBtb2RlbF9wYXJhbXMkYWxwaGFOZWdDb21wLCBwYWlyZWQgPSBUKQojbm90IHNpZ25pZmljYW50CgpgYGAKCgojIFBsb3QgcmVsYXRpb25zIGJldHdlZW4gbW9kZWwgcGFyYW1ldGVycyBhbmQgYWdlCmBgYHtyIGFnZSBwYXJhbWV0ZXIgcGxvdCwgZmlnLndpZHRoID0gNywgZmlnLmhlaWdodCA9IDQsIHVuaXRzID0gImluIn0KCnBhcmFtc19sb25nIDwtIG1vZGVsX3BhcmFtcyAlPiUKICAgIHBpdm90X2xvbmdlcihuYW1lc190byA9ICJwYXJhbSIsCiAgICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gImVzdGltYXRlIiwKICAgICAgICAgICAgICAgICBjb2xzID0gYyhhbHBoYVBvc0Nob2ljZTphZ2VuY3lCb251cykpIAoKcGFyYW1zX2xvbmckcGFyYW0gPC0gZmFjdG9yKHBhcmFtc19sb25nJHBhcmFtLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoImFscGhhUG9zQ2hvaWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhTmVnQ2hvaWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhUG9zQ29tcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbHBoYU5lZ0NvbXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmV0YUFnZW5jeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZXRhTWFjaGluZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhZ2VuY3lCb251cyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYyhUZVgoIiRcXGFscGhhX3tjaG9pY2VfK30kIiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoIiRcXGFscGhhX3tjaG9pY2VfLX0kIiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZVgoIiRcXGFscGhhX3tjb21wXyt9JCIpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVYKCIkXFxhbHBoYV97Y29tcF8tfSQiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgiJFxcYmV0YV97YWdlbmN5fSQiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlWCgiJFxcYmV0YV97bWFjaGluZX0kIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBZ2VuY3l+Qm9udXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKCnBhcmFtc19wbG90IDwtIGdncGxvdChwYXJhbXNfbG9uZywgYWVzKHggPSBhZ2UsIHkgPSBlc3RpbWF0ZSwgY29sb3IgPSBwYXJhbSkpICsKICAgIGZhY2V0X3dyYXAofnBhcmFtLCBzY2FsZSA9ICJmcmVlIiwgbGFiZWxsZXIgPSBsYWJlbF9wYXJzZWQsIG5yb3cgPSAyKSArCiAgICBnZW9tX3BvaW50KCkgKwogICAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgYWVzKGZpbGwgPSBwYXJhbSkpICsKICAgIHlsYWIoIlBhcmFtZXRlciBFc3RpbWF0ZSIpICsKICAgIHhsYWIoIkFnZSIpICsKICAgIHZvY190aGVtZSgpICsKICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKcGFyYW1zX3Bsb3QKYGBgCgojIFBhcmFtZXRlciBzdW1tYXJ5IHN0YXRpc3RpY3MKYGBge3IgcGFyYW1ldGVyIHN1bW1hcnkgc3RhdHN9CgpwYXJhbV9zdW1tYXJ5IDwtIHBhcmFtc19sb25nICU+JQogICAgZ3JvdXBfYnkocGFyYW0pICU+JQogICAgc3VtbWFyaXplKG1lYW5Fc3RpbWF0ZSA9IG1lYW4oZXN0aW1hdGUpLAogICAgICAgICAgICBzZUVzdGltYXRlID0gc2QoZXN0aW1hdGUpL3NxcnQobigpKSkKcGFyYW1fc3VtbWFyeQoKYGBgCgoKIyBRdWVzdGlvbm5haXJlIHJlbGF0aW9ucwoKIyMgRE9DCmBgYHtyIGRvY30KIyBsb2FkIHF1ZXN0aW9ubmFpcmUgZGF0YQpET0MgPC0gcmVhZF9jc3YoImRhdGEvc2NvcmVkX3N1cnZleXMvRE9DX3Njb3JlZC5jc3YiLCBjb2xfbmFtZXMgPSBUUlVFKSAKCiMgbWVyZ2Ugd2l0aCBtb2RlbCBwYXJhbXMKRE9DIDwtIGxlZnRfam9pbihET0MsIG1vZGVsX3BhcmFtcykKCiMgeiBzY29yZSBjb250aW51b3VzIHZhcmlhYmxlcwpET0MkekFnZSA8LSBzY2FsZV90aGlzKERPQyRhZ2UpCkRPQyR6QmV0YUFnZW5jeSA8LSBzY2FsZV90aGlzKERPQyRiZXRhQWdlbmN5KQpET0MkekFnZW5jeUJvbnVzIDwtIHNjYWxlX3RoaXMoRE9DJGFnZW5jeUJvbnVzKQoKIyByZWxhdGlvbiBiZXR3ZWVuIERPQyBhbmQgYWdlCmxtKERPQyB+IHpBZ2UsIERPQykgJT4lIHN1bW1hcnkoKQojbWFyZ2luYWwgcG9zaXRpdmUgZWZmZWN0IChwID0gLjA1OCkKCiMgcmVsYXRpb24gYmV0d2VlbiBET0MgYW5kIFZvQwpsbShET0MgfiB6QmV0YUFnZW5jeSAqIHpBZ2VuY3lCb251cyAqekFnZSwgRE9DKSAlPiUgc3VtbWFyeSgpCiMgbm8gZWZmZWN0cwoKYGBgCgojIyBMT0MKYGBge3IgbG9jfQojIGxvYWQgcXVlc3Rpb25uYWlyZSBkYXRhCkxPQyA8LSByZWFkX2NzdigiZGF0YS9zY29yZWRfc3VydmV5cy9MT0Nfc2NvcmVkLmNzdiIsIGNvbF9uYW1lcyA9IFRSVUUpIAoKIyBtZXJnZSB3aXRoIG1vZGVsIHBhcmFtcwpMT0MgPC0gbGVmdF9qb2luKExPQywgbW9kZWxfcGFyYW1zKQoKI3ogc2NvcmUgY29udGludW91cyB2YXJpYWJsZXMKTE9DJHpBZ2UgPC0gc2NhbGVfdGhpcyhET0MkYWdlKQpMT0MkekJldGFBZ2VuY3kgPC0gc2NhbGVfdGhpcyhMT0MkYmV0YUFnZW5jeSkKTE9DJHpBZ2VuY3lCb251cyA8LSBzY2FsZV90aGlzKExPQyRhZ2VuY3lCb251cykKCiMgcmVsYXRpb24gYmV0d2VlbiBMT0MgYW5kIGFnZQpsbShMT0MgfiB6QWdlLCBMT0MpICU+JSBzdW1tYXJ5KCkKIyBubyBlZmZlY3QKCiMgcmVsYXRpb24gYmV0d2VlbiBMT0MgYW5kIFZvQwpsbShMT0MgfiB6QmV0YUFnZW5jeSAqIHpBZ2VuY3lCb251cyAqIHpBZ2UsIExPQykgJT4lIHN1bW1hcnkoKQojIG5vIGVmZmVjdHMKYGBgCgoKIyMgQkRJCmBgYHtyIGJkaX0KIyBsb2FkIHF1ZXN0aW9ubmFpcmUgZGF0YQpCREkgPC0gcmVhZF9jc3YoImRhdGEvc2NvcmVkX3N1cnZleXMvQkRJX3Njb3JlZC5jc3YiLCBjb2xfbmFtZXMgPSBUUlVFKSAKCiMgbWVyZ2Ugd2l0aCBtb2RlbCBwYXJhbXMKQkRJIDwtIGxlZnRfam9pbihCREksIG1vZGVsX3BhcmFtcykKCiN6IHNjb3JlIGNvbnRpbnVvdXMgdmFyaWFibGVzCkJESSR6QWdlIDwtIHNjYWxlX3RoaXMoQkRJJGFnZSkKQkRJJHpCZXRhQWdlbmN5IDwtIHNjYWxlX3RoaXMoQkRJJGJldGFBZ2VuY3kpCkJESSR6QWdlbmN5Qm9udXMgPC0gc2NhbGVfdGhpcyhCREkkYWdlbmN5Qm9udXMpCgojIHJlbGF0aW9uIGJldHdlZW4gQkRJIGFuZCBhZ2UKbG0oekJESSB+IHpBZ2UsIEJESSkgJT4lIHN1bW1hcnkoKQojIG5vIGVmZmVjdAoKIyByZWxhdGlvbiBiZXR3ZWVuIEJESSBhbmQgVm9DIApsbSh6QkRJIH4gekJldGFBZ2VuY3kgKiB6QWdlbmN5Qm9udXMgKnpBZ2UsIEJESSkgJT4lIHN1bW1hcnkoKQojIG5vIGVmZmVjdHMKCmBgYAoKCiMjIFNUQUkKYGBge3Igc3RhaX0KIyBsb2FkIHF1ZXN0aW9ubmFpcmUgZGF0YQpTVEFJIDwtIHJlYWRfY3N2KCJkYXRhL3Njb3JlZF9zdXJ2ZXlzL1NUQUlfc2NvcmVkLmNzdiIsIGNvbF9uYW1lcyA9IFRSVUUpIAoKIyBtZXJnZSB3aXRoIG1vZGVsIHBhcmFtcwpTVEFJIDwtIGxlZnRfam9pbihTVEFJLCBtb2RlbF9wYXJhbXMpCgojeiBzY29yZSBjb250aW51b3VzIHZhcmlhYmxlcwpTVEFJJHpBZ2UgPC0gc2NhbGVfdGhpcyhTVEFJJGFnZSkKU1RBSSR6QmV0YUFnZW5jeSA8LSBzY2FsZV90aGlzKFNUQUkkYmV0YUFnZW5jeSkKU1RBSSR6QWdlbmN5Qm9udXMgPC0gc2NhbGVfdGhpcyhTVEFJJGFnZW5jeUJvbnVzKQoKIyByZWxhdGlvbiBiZXR3ZWVuIFNUQUlfdCBhbmQgYWdlCmxtKHpTVEFJX3QgfiB6QWdlLCBTVEFJKSAlPiUgc3VtbWFyeSgpCiMgbm8gZWZmZWN0CgojIHJlbGF0aW9uIGJldHdlZW4gU1RBSV90IGFuZCBWb0MKbG0oelNUQUlfdCAgfiB6QmV0YUFnZW5jeSAqIHpBZ2VuY3lCb251cyAqekFnZSwgU1RBSSkgJT4lIHN1bW1hcnkoKQojIG5vIGVmZmVjdAoKIyByZWxhdGlvbiBiZXR3ZWVuIFNUQUlfcyBhbmQgYWdlCmxtKHpTVEFJX3MgfiB6QWdlLCBTVEFJKSAlPiUgc3VtbWFyeSgpCiMgbm8gZWZmZWN0cwoKIyByZWxhdGlvbiBiZXR3ZWVuIFNUQUlfcyBhbmQgVm9DCmxtKHpTVEFJX3MgIH4gekJldGFBZ2VuY3kgKiB6QWdlbmN5Qm9udXMgKnpBZ2UsIFNUQUkpICU+JSBzdW1tYXJ5KCkKIyBubyBlZmZlY3RzCmBgYA==